#Boa:Dialog:Dialog1

import wx
import wx.grid
import utiles
import consultasBD
from decimal import Decimal
import sincronizar_tabla

ROJO = (255, 145, 145, 255)
VERDE = (145, 255, 145, 255)
AZUL = (145, 145, 255, 255)
BLANCO = (255, 255, 255, 255)
AMARILLO = (254, 248, 191, 255)
GRIS = ( 220, 220, 220, 255)
NEGRO = ( 0, 0, 0, 255)
VERDENEGRO = ( 47, 79, 79, 255)

def create(parent, idcliente, nombre, vendedora, idvendedora):
    return Dialog1(parent, idcliente, nombre, vendedora, idvendedora)

[wxID_DIALOG1, wxID_DIALOG1BUTTON1, wxID_DIALOG1BUTTON2, wxID_DIALOG1BUTTON3, 
 wxID_DIALOG1BUTTON4, wxID_DIALOG1COMBOBOX1, wxID_DIALOG1GRID1, 
 wxID_DIALOG1STATICTEXT1, wxID_DIALOG1STATICTEXT2, wxID_DIALOG1STATICTEXT3, 
 wxID_DIALOG1STATICTEXT4, wxID_DIALOG1STATICTEXT5, wxID_DIALOG1STATICTEXT6, 
 wxID_DIALOG1STATICTEXT7, wxID_DIALOG1STATICTEXT8, wxID_DIALOG1STATICTEXT9, 
 wxID_DIALOG1TEXTCTRL1, wxID_DIALOG1TEXTCTRL10, wxID_DIALOG1TEXTCTRL2, 
 wxID_DIALOG1TEXTCTRL3, wxID_DIALOG1TEXTCTRL4, wxID_DIALOG1TEXTCTRL5, 
 wxID_DIALOG1TEXTCTRL6, wxID_DIALOG1TEXTCTRL7, wxID_DIALOG1TEXTCTRL8, 
 wxID_DIALOG1TEXTCTRL9, 
] = [wx.NewId() for _init_ctrls in range(26)]

class Dialog1(wx.Dialog):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_DIALOG1, name='', parent=prnt,
              pos=wx.Point(374, 161), size=wx.Size(629, 411),
              style=wx.DEFAULT_DIALOG_STYLE, title='Senias')
        self.SetClientSize(wx.Size(621, 384))

        self.staticText1 = wx.StaticText(id=wxID_DIALOG1STATICTEXT1,
              label='Cliente', name='staticText1', parent=self, pos=wx.Point(8,
              8), size=wx.Size(33, 13), style=0)

        self.textCtrl1 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL1, name='textCtrl1',
              parent=self, pos=wx.Point(88, 24), size=wx.Size(232, 21), style=0,
              value='')
        self.textCtrl1.SetEditable(False)

        self.staticText2 = wx.StaticText(id=wxID_DIALOG1STATICTEXT2,
              label='Vendedora', name='staticText2', parent=self,
              pos=wx.Point(328, 8), size=wx.Size(53, 13), style=0)

        self.textCtrl2 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL2, name='textCtrl2',
              parent=self, pos=wx.Point(360, 24), size=wx.Size(72, 21), style=0,
              value='')
        self.textCtrl2.SetEditable(False)

        self.staticText3 = wx.StaticText(id=wxID_DIALOG1STATICTEXT3,
              label='PTC', name='staticText3', parent=self, pos=wx.Point(8, 48),
              size=wx.Size(19, 13), style=0)

        self.textCtrl3 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL3, name='textCtrl3',
              parent=self, pos=wx.Point(8, 64), size=wx.Size(72, 21), style=0,
              value='')

        self.button1 = wx.Button(id=wxID_DIALOG1BUTTON1, label='+',
              name='button1', parent=self, pos=wx.Point(88, 64),
              size=wx.Size(24, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnSumar, id=wxID_DIALOG1BUTTON1)

        self.button2 = wx.Button(id=wxID_DIALOG1BUTTON2, label='-',
              name='button2', parent=self, pos=wx.Point(112, 64),
              size=wx.Size(24, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnRestar, id=wxID_DIALOG1BUTTON2)

        self.grid1 = wx.grid.Grid(id=wxID_DIALOG1GRID1, name='grid1',
              parent=self, pos=wx.Point(8, 96), size=wx.Size(600, 232),
              style=0)
        self.grid1.Bind(wx.EVT_SET_FOCUS, self.OnSaltarMonto)

        self.staticText5 = wx.StaticText(id=wxID_DIALOG1STATICTEXT5,
              label='Senia', name='staticText5', parent=self, pos=wx.Point(88,
              336), size=wx.Size(26, 13), style=0)

        self.comboBox1 = wx.ComboBox(choices=[], id=wxID_DIALOG1COMBOBOX1,
              name='comboBox1', parent=self, pos=wx.Point(168, 352),
              size=wx.Size(96, 21), style=0, value='')
        self.comboBox1.SetLabel('')
        self.comboBox1.Bind(wx.EVT_COMBOBOX, self.OnCambiaFormaPago,
              id=wxID_DIALOG1COMBOBOX1)

        self.textCtrl5 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL5, name='textCtrl5',
              parent=self, pos=wx.Point(88, 352), size=wx.Size(72, 21),
              style=wx.TE_RIGHT | wx.TE_LEFT, value='0.00')

        self.staticText6 = wx.StaticText(id=wxID_DIALOG1STATICTEXT6,
              label='Fecha', name='staticText6', parent=self, pos=wx.Point(536,
              8), size=wx.Size(29, 13), style=0)

        self.textCtrl6 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL6, name='textCtrl6',
              parent=self, pos=wx.Point(536, 24), size=wx.Size(72, 21), style=0,
              value='')
        self.textCtrl6.SetEditable(False)

        self.button3 = wx.Button(id=wxID_DIALOG1BUTTON3, label='Grabar',
              name='button3', parent=self, pos=wx.Point(448, 352),
              size=wx.Size(75, 23), style=0)
        self.button3.Bind(wx.EVT_BUTTON, self.OnGrabar, id=wxID_DIALOG1BUTTON3)

        self.button4 = wx.Button(id=wxID_DIALOG1BUTTON4, label='Salir',
              name='button4', parent=self, pos=wx.Point(534, 352),
              size=wx.Size(75, 23), style=0)
        self.button4.Bind(wx.EVT_BUTTON, self.OnSalir, id=wxID_DIALOG1BUTTON4)

        self.staticText4 = wx.StaticText(id=wxID_DIALOG1STATICTEXT4,
              label='Total', name='staticText4', parent=self, pos=wx.Point(8,
              336), size=wx.Size(24, 13), style=0)

        self.textCtrl4 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL4, name='textCtrl4',
              parent=self, pos=wx.Point(8, 352), size=wx.Size(72, 21),
              style=wx.TE_RIGHT | wx.TE_LEFT, value='0.00')
        self.textCtrl4.SetEditable(False)

        self.textCtrl7 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL7, name='textCtrl7',
              parent=self, pos=wx.Point(8, 24), size=wx.Size(72, 21), style=0,
              value='')
        self.textCtrl7.SetEditable(False)

        self.textCtrl8 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL8, name='textCtrl8',
              parent=self, pos=wx.Point(328, 24), size=wx.Size(32, 21), style=0,
              value='')
        self.textCtrl8.SetEditable(False)

        self.staticText7 = wx.StaticText(id=wxID_DIALOG1STATICTEXT7,
              label='Forma Pago', name='staticText7', parent=self,
              pos=wx.Point(168, 336), size=wx.Size(57, 13), style=0)

        self.staticText8 = wx.StaticText(id=wxID_DIALOG1STATICTEXT8,
              label='Lote', name='staticText8', parent=self, pos=wx.Point(264,
              336), size=wx.Size(21, 13), style=0)
        self.staticText8.Show(False)

        self.staticText9 = wx.StaticText(id=wxID_DIALOG1STATICTEXT9,
              label='Cupon', name='staticText9', parent=self, pos=wx.Point(304,
              336), size=wx.Size(31, 13), style=0)
        self.staticText9.Show(False)

        self.textCtrl9 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL9, name='textCtrl9',
              parent=self, pos=wx.Point(264, 352), size=wx.Size(40, 21),
              style=0, value='')
        self.textCtrl9.Show(False)

        self.textCtrl10 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL10,
              name='textCtrl10', parent=self, pos=wx.Point(304, 352),
              size=wx.Size(40, 21), style=0, value='')
        self.textCtrl10.Show(False)

    def __init__(self, parent, idcliente, nombre, vendedora, idvendedora):
        self._init_ctrls(parent)
        idcliente = idcliente
        nombrecliente = nombre
        self.tipo = 0
        self.textCtrl1.SetLabel(nombrecliente)
        self.textCtrl7.SetLabel(idcliente)
        self.textCtrl2.SetLabel(vendedora)
        self.textCtrl8.SetLabel(idvendedora)
        self.textCtrl6.SetLabel(utiles.obtenerFecha("d-m-Y"))
        self.llenarComboPagos()
        self.crearGrillas()

    def crearGrillas(self):
        #PTC,CodSussan,Cant,VUnitario,Total,Descripcion,Talle,Color
        #0   1         2    3         4     5           6     7 
        columnas = ['P.T.C','Codigo\nSussan','Cant','Valor\nUnitario','Total',\
                    'Descripcion','Talle','Color']
        self.grid1.CreateGrid(1,len(columnas))
        for i, col in enumerate(columnas): 
            self.grid1.SetColLabelValue(i, col)
        self.grid1.SetSelectionMode(wx.grid.Grid.wxGridSelectRows)
        self.grid1.EnableEditing(False)
        self.ajustarAnchoColumnas()
        self.grid1.Refresh()

    def llenarComboPagos(self):
        sql = "SELECT nombre FROM valores WHERE tipo='0' ORDER BY nombre"
        resultados = consultasBD.ordenCrudaDict(sql)
        for item in resultados:
            self.comboBox1.Append(item["nombre"])
        self.comboBox1.SetEditable(False)

    def ajustarAnchoColumnas(self):
        for y in xrange(self.grid1.GetNumberCols()):
            self.grid1.AutoSizeColumn(y,True)

    def OnSalir(self, event):
        self.Close()

    def buscarDatosProductos(self, ptc):
        r01 = "SELECT p1.ptc,p1.codsussan,p2.descri as descripcion,\n "
        r02 = "       p1.talle,p1.color,p3.nombre as colornombre,\n "
        r03 = "       p2.preciolt1 as precio,p5.nombre \n "
        r04 = "FROM \n "
        r05 = "  (SELECT id as ptc,codsussan,talle,color \n "
        r06 = "   FROM producto_talle_color \n "
        r07 = "   WHERE id='"+ptc+"') AS p1,\n "
        r08 = "  productos AS p2, \n "
        r09 = "  colores AS p3, \n "
        r10 = "  "
        r11 = "  proveedor AS p5 \n "
        r12 = "WHERE \n "
        r13 = "  p1.codsussan = p2.codsussan AND \n "
        r14 = "  p1.color = p3.idcolor AND \n "
        r15 = "  "
        r16 = "  "
        r17 = "  p2.proveedor = p5.idproveedor \n "
        consultaSQL = r01+r02+r03+r04+r05+r06+r07+r08+r09+r10+r11+r12+r13+r14+r15+r16+r17
        resultado = consultasBD.ordenCrudaDict(consultaSQL)
        if resultado == None or resultado == ():
            print "Producto no encontrado en esta sucursal"
            return False,()
        return True,resultado[0]

    def buscarPTCenGrilla(self,ptc):
        for x in xrange(self.grid1.GetNumberRows()):
            if self.grid1.GetCellValue(x,0)==ptc:return x
        return -1

    def actualizaTotal(self):
        total = Decimal("0.00")
        for fil in xrange(self.grid1.GetNumberRows()):
            #PTC,CodSussan,Cant,VUnitario,Total,Descripcion,Talle,Color
            #0   1         2    3         4     5           6     7 
            if self.grid1.GetCellValue(fil,0)=="":
                continue
            total+= Decimal(self.grid1.GetCellValue(fil,4))
        total = total.quantize(Decimal("0.10"))
        self.textCtrl4.SetLabel(str(total))

    def OnSaltarMonto(self, event):
        self.textCtrl5.SetFocus()

    def OnSumar(self, event):

        ptc = self.textCtrl3.GetLabel()
        if ptc == "":
            self.textCtrl3.SetLabel("")
            self.textCtrl3.SetFocus()
            return
        #Se fuerza a que todo PTC entre en renglones diferentes
        #si se llevan 2 o mas productos con igual PTC, se ponen
        #todos en renglones diferentes.
        #fila = self.buscarPTCenGrilla(ptc)
        fila = -1
        if fila<0:
            #nuevo producto en grilla
            fila = self.grid1.GetNumberRows()-1
            existen,datos = self.buscarDatosProductos(ptc)
            if not existen:
                utiles.mensaje(None,"PTC Inexistente")
                self.textCtrl3.SetLabel("")
                return
            #PTC,CodSussan,Cant,VUnitario,Total,Descripcion,Talle,Color
            #0   1         2    3         4     5           6     7 
            ptc = datos["ptc"]
            codsussan = datos["codsussan"]
            vunitario = datos["precio"]
            descripcion = datos["descripcion"] 
            talle = datos["talle"] 
            color = datos["colornombre"]+" / "+datos["color"]
            self.grid1.SetCellValue(fila,0,ptc)
            self.grid1.SetCellValue(fila,1,codsussan)
            self.grid1.SetCellValue(fila,2,"0")
            self.grid1.SetCellValue(fila,3,str(vunitario))
            self.grid1.SetCellValue(fila,4,"0")
            self.grid1.SetCellValue(fila,5,descripcion)
            self.grid1.SetCellValue(fila,6,talle)
            self.grid1.SetCellValue(fila,7,color)
            self.grid1.AppendRows()
        try:
            cantidad = int(self.grid1.GetCellValue(fila,2))
            cantidad+= 1
        except:
            cantidad = 1
        self.grid1.SetCellValue(fila,2,str(cantidad))
        try:
            vunitario = self.grid1.GetCellValue(fila,3)
            vunitario = Decimal(vunitario).quantize(Decimal("0.10"))
        except:
            vunitario = Decimal("0.00")
        subtotal = Decimal(vunitario*cantidad).quantize(Decimal("0.10"))
        self.grid1.SetCellValue(fila,4,str(subtotal))
        
        self.grid1.SetCellAlignment(fila, 2, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fila, 3, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fila, 4, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellBackgroundColour(fila,2,GRIS)
        self.grid1.SetCellBackgroundColour(fila,3,GRIS)
        self.grid1.SetCellBackgroundColour(fila,4,GRIS)
        self.ajustarAnchoColumnas()

        self.actualizaTotal()
        self.textCtrl3.SetLabel("")
        self.textCtrl3.SetFocus()

    def OnRestar(self, event):

        borrar = False
        ptc = self.textCtrl3.GetLabel()
        if ptc == "":
            self.textCtrl3.SetLabel("")
            self.textCtrl3.SetFocus()
            return
        fila = self.buscarPTCenGrilla(ptc)
        if fila<0:
            utiles.mensaje(None,"PTC no existente")
            return
        #Se fuerza a que todo PTC entre en renglones diferentes
        #si se llevan 2 o mas productos con igual PTC, se ponen
        #todos en renglones diferentes.
##        try:
##            cantidad = int(self.grid1.GetCellValue(fila,2))
##            cantidad-= 1
##            if cantidad == 0:
##                #borrar renglon
##                borrar = True
##        except:
##            cantidad = 1
##        if borrar:
##            self.grid1.DeleteRows(fila)
##            self.actualizaTotal()
##            self.textCtrl3.SetLabel("")
##            self.textCtrl3.SetFocus()
##            return
##        self.grid1.SetCellValue(fila,2,str(cantidad))
##        try:
##            vunitario = self.grid1.GetCellValue(fila,3)
##            vunitario = Decimal(vunitario).quantize(Decimal("0.10"))
##        except:
##            vunitario = Decimal("0.00")
##        subtotal = Decimal(vunitario*cantidad).quantize(Decimal("0.10"))
##        self.grid1.SetCellValue(fila,4,str(subtotal))
##        
##        self.grid1.SetCellAlignment(fila, 2, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
##        self.grid1.SetCellAlignment(fila, 3, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
##        self.grid1.SetCellAlignment(fila, 4, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
##        self.grid1.SetCellBackgroundColour(fila,2,GRIS)
##        self.grid1.SetCellBackgroundColour(fila,3,GRIS)
##        self.grid1.SetCellBackgroundColour(fila,4,GRIS)
##        self.ajustarAnchoColumnas()

        self.grid1.DeleteRows(fila)
        self.actualizaTotal()
        self.textCtrl3.SetLabel("")
        self.textCtrl3.SetFocus()

    def verificoTarjetaPromocion(self,codigoFormaPago):
        sql = "SELECT * FROM valorespromociones WHERE tarjeta='"+codigoFormaPago+"' "
        resultado = consultasBD.ordenCrudaDict(sql)
        if resultado == () or resultado == None or len(resultado)==0:
            return False
        diaDeLaSemana = str(utiles.getDiaSemana())
        for item in resultado:
            dia = item["dia"]
            if diaDeLaSemana in dia:
                return True
        return False

    def OnGrabar(self, event):
        print "Grabando"
        try:
            monto = Decimal(self.textCtrl5.GetLabel())
        except:
            utiles.mensaje(None,"Debe ingresar un valor numerico")
            self.textCtrl5.SetFocus()
            return
        if monto <= Decimal("0.00"):
            utiles.mensaje(None,"Debe ingresar un valor mayor a 0")
            self.textCtrl5.SetFocus()
            return
        if self.tipo == 1:
            valor1 = self.textCtrl9.GetLabel()
            valor2 = self.textCtrl10.GetLabel()
            try:
                valor1 = int(valor1)
            except:
                utiles.mensaje(None,"Debe especificar un nro. LOTE")
                self.textCtrl9.SetFocus()
                return False
            try:
                valor2 = int(valor2)
            except:
                utiles.mensaje(None,"Debe especificar un nro. CUPON")
                self.textCtrl10.SetFocus()
                return False
        total = Decimal("0.00")
        for fil in xrange(self.grid1.GetNumberRows()):
            if self.grid1.GetCellValue(fil,0)=="":
                continue
            total+= Decimal(self.grid1.GetCellValue(fil,4)).quantize(Decimal("0.10"))
        if monto>=total:
            texto = "El monto seniado es igual o mayor al facturado\n"
            texto+= "Haga una factura!!!"
            utiles.mensaje(None,texto)
            self.textCtrl5.SetFocus()
            return
        if self.comboBox1.GetSelection()<0:
            texto = "Debe indicar la forma de pago\n"
            utiles.mensaje(None,texto)
            self.comboBox1.SetFocus()
            return
        formaDePago = self.comboBox1.GetLabel()
        if self.verificoTarjetaPromocion(formaDePago):
            texto = "No puede seniar mercaderia con un\n"
            texto+= "medio de pago sobre el que hay\n"
            texto+= "vigente una promocion."
            utiles.mensaje(None,texto)
            self.comboBox1.SetSelection(-1)
            self.comboBox1.SetFocus()
            return

        #PTC,CodSussan,Cant,VUnitario,Total,Descripcion,Talle,Color
        #0   1         2    3         4     5           6     7 
        sucursal = utiles.getSucursalActiva()

        try:
            consultasBD.begin()
            idsenia = utiles.secuencia("ventastienesenias", sucursal)
            self.idsenia = idsenia
            idcliente = self.textCtrl7.GetLabel()
            fecha = self.textCtrl6.GetLabel()
            fecha = utiles.invertirFecha(fecha)
            fechaVencimiento = str(utiles.sumarDiasLaboralesAFecha(10))
            self.vencimiento = fechaVencimiento
            usuario = self.textCtrl8.GetLabel()
            monto = self.textCtrl5.GetLabel()
            formapago = self.comboBox1.GetLabel()
            for fila in xrange(self.grid1.GetNumberRows()):
                if self.grid1.GetCellValue(fila,0)=="":
                    continue
                ptc = self.grid1.GetCellValue(fila,0)
                codsussan = self.grid1.GetCellValue(fila,1)
                cantidad = self.grid1.GetCellValue(fila,2)
                vunitario = self.grid1.GetCellValue(fila,3)
                total = self.grid1.GetCellValue(fila,4)
                estado = "0" #0 pendiente, 1 facturado, 2 borrado
                r1 = "INSERT INTO ventastienesenias(idsenia,fecha,fechaVencimiento, \n"
                r2 = "            idcliente,ptc,codsussan,cantidad,vunitario,total, \n"
                r3 = "            estado,usuario,monto,formapago) \n"
                r4 = "VALUES \n"
                r5 = "('%s','%s','%s','%s'," % (idsenia,fecha,fechaVencimiento,idcliente)
                r6 = "'%s','%s','%s','%s', \n" % (ptc,codsussan,cantidad,vunitario)
                r7 = "'%s','%s','%s','%s','%s') " % (total,estado,usuario,monto,formapago)
                sql = r1+r2+r3+r4+r5+r6+r7
                sincronizar_tabla.addChange(sql=sql)
                consultasBD.executaSinCommit(None, sql)
                
                cantidad = int(cantidad)*-1
                stock = utiles.stock_sumado(ptc,sucursal,int(cantidad))
                r1 = "UPDATE stock SET stock = '%s' " % (str(stock))
                r2 = "WHERE ptc='%s' AND sucursal='%s' " % (ptc, sucursal)
                sql = r1+r2
                sincronizar_tabla.addChange(sql=sql)
                consultasBD.executaSinCommit(None, sql)

            mifecha = utiles.obtenerFecha("Y-m-d")
            misenia = str(monto)
            lote = self.textCtrl9.GetLabel()
            cupon = self.textCtrl10.GetLabel()
            if self.tipo == 1:
                descripcionpago = "Tarjeta "+self.comboBox1.GetLabel()+" / "+lote+" / "+cupon
            else:
                descripcionpago = self.comboBox1.GetLabel()
            micliente = "SENIA "+self.textCtrl1.GetLabel()+" / "+self.textCtrl7.GetLabel()
            r1 = "INSERT INTO cajachica(fecha,tipoalta,destinatario,idvalor,monto) "
            r2 = "VALUES('"+mifecha+"','Ingreso','"+micliente+"','"+formapago+"','"+misenia+"') "
            sql = r1+r2
            consultasBD.executaSinCommit(None, sql)
            sincronizar_tabla.addChange(sql=sql)      
            vendedora = self.textCtrl2.GetLabel()  
            r1 = "INSERT INTO cajachica2(fecha,tipoalta,motivo,observaciones,usuario,idvalor,monto,descripcionpago) "
            r2 = "VALUES('"+mifecha+"','INGRESO','SENIA','"+micliente+"','"+vendedora+"','"+formapago+"','"+misenia+"','"+descripcionpago+"') "
            sql = r1+r2
            consultasBD.executaSinCommit(None, sql)
            sincronizar_tabla.addChange(sql=sql)            

            consultasBD.commit()
            sincronizar_tabla.syncServerTables(self, ["stock"])
            self.imprimir()
        except:
            utiles.mensaje(None,"Error al grabar")

        self.Close()

    def imprimir(self):
        textoRecibo = []
        textoRecibo.append("SENIA "+self.idsenia)
        textoRecibo.append(" ")
        textoRecibo.append("Fecha: "+self.textCtrl6.GetLabel())
        textoRecibo.append("Vencimiento: "+self.vencimiento)
        textoRecibo.append(" ")
        textoRecibo.append("Cliente: "+self.textCtrl1.GetLabel()[:30]+" / "+self.textCtrl7.GetLabel())
        textoRecibo.append(" ")
        textoRecibo.append("IMPORTE ADELANTADO: $ "+self.textCtrl5.GetLabel())
        formapago = self.comboBox1.GetLabel()
        try:
            sql = "SELECT descripcion FROM valores WHERE nombre='"+formapago+"' "
            resultado = consultasBD.ordenCrudaDict(sql)
            nombrepago = resultado[0]["descripcion"]
        except:
            nombrepago = ""
        textoRecibo.append("FORMA PAGO: "+formapago+" "+nombrepago)
        textoRecibo.append(" ")
        textoRecibo.append("*** DETALLE ***")
        textoRecibo.append("P.T.C. -- CANTIDAD -- DESCRIPCION")
        #PTC,CodSussan,Cant,VUnitario,Total,Descripcion,Talle,Color
        #0   1         2    3         4     5           6     7 
        for fil in xrange(self.grid1.GetNumberRows()):
            if self.grid1.GetCellValue(fil,0)=="":
                continue
            ptc = self.grid1.GetCellValue(fil,0)
            cantidad = self.grid1.GetCellValue(fil,2)
            descripcion = self.grid1.GetCellValue(fil,5)[:30]
            texto = ptc+" -- "+cantidad+" -- "+descripcion
            textoRecibo.append(texto)
        textoRecibo.append(" ")
        
        html = open('c:\\erpsussan\\modelos\\reciboEnLaser1.html', 'r').read()
        datos_sucursal = utiles.datosSucursal()
        miImagen = "imgs\logosucursal"+datos_sucursal[0]+".png"
        cadena_imagen = ' <img src="%s" />' % (miImagen)
        html = html.replace('{ % imagen % }', cadena_imagen)
        html = html.replace('{ % tipo operacion % }',"checked" )
        contenido = ''

        for renglon in textoRecibo:
            contenido += '<tr><td><div align="center"><font color="#000000" size="2">%s</font></div></td></tr>' % renglon
        
        html = html.replace('{ % datos % }', str(contenido))

        archivo_salida = open('c:\\erpsussan.doc\\reciboEnLaser2.html', 'w')
        archivo_salida.write(html)
        archivo_salida.close()

        import os
        os.system("taskkill /IM firefox.exe /F")
        os.system("c:\\explorer.lnk c:\\erpsussan.doc\\reciboEnLaser2.html")
        
        return True

    def OnCambiaFormaPago(self, event):
        sql = "SELECT tipoVenta FROM valores WHERE nombre='"+self.comboBox1.GetLabel()+"' "
        dato = consultasBD.ordenCruda(sql)
        try:
            dato = int(dato[0][0])
        except:
            dato = 0

        self.tipo = dato
        if self.tipo == 1:
            self.staticText8.Show(True)
            self.staticText9.Show(True)
            self.textCtrl9.Show(True)
            self.textCtrl10.Show(True)
        else:
            self.staticText8.Show(False)
            self.staticText9.Show(False)
            self.textCtrl9.Show(False)
            self.textCtrl10.Show(False)
